package cl.tinet.trainee.proyecto.ejb;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import org.apache.log4j.Logger;

import cl.tinet.trainee.proyecto.excepciones.MiException;
import cl.tinet.trainee.proyecto.excepciones.UsuarioInactivoException;
import cl.tinet.trainee.proyecto.excepciones.UsuarioPasswordException;
import cl.tinet.trainee.proyecto.modelo.Usuario;

/**
 * 
 * LoginBeanImpl implementa InterfazLoginBean.
 * 
 * @author Jose Palma.
 */
@Stateless(mappedName = "loginBean", name = "loginBean")
public class LoginBeanImpl implements InterfazLoginBean {
    /**
     * 
     */
    private static final Logger LOG = Logger.getLogger(LoginBeanImpl.class);
    /**
     * Bean de usuario.
     */
    @EJB(mappedName = "userBean", name = "userBean")
    private transient InterfazBeanGenerico<Usuario> usuarioBean;

    /**
     * {@inheritDoc}
     */
    public Usuario verificaLogin(Usuario usuarioAValidar) throws MiException {
        Usuario usuarioEncontrado = usuarioBean.buscar(usuarioAValidar);
        if (usuarioEncontrado != null) {
            // verifica el estado del usuario es inactivo
            if (!usuarioEncontrado.getEstado()) {
                LOG.error("LoginBean: Inactivo"
            + usuarioAValidar.getUsername());
                throw new UsuarioInactivoException(
                        UsuarioInactivoException.USUARIO_INACTIVO);
            } else {
                // si esta activo, valida la password
                if (!usuarioEncontrado.getPassword().equals(
                        usuarioAValidar.getPassword())) {
                    LOG.error("LoginBean: Password incorrecto"
                            + usuarioAValidar.getUsername());
                    throw new UsuarioPasswordException(
                            UsuarioPasswordException.USUARIO_PASSWORD);
                }
            }

        }
        return usuarioEncontrado;
    }

}
